package com.sixiaojie.flink.dto;

import lombok.Data;

import java.util.Date;

/**
 * 用户行为事件数据传输对象
 * 用于记录用户在电商平台的各种行为，如点击、浏览、搜索等
 */
@Data
public class UserBehaviorEvent {
    /**
     * 用户ID - 关联用户表中的用户
     */
    private Long userId;

    /**
     * 行为类型
     * 可选值: CLICK(点击), VIEW(浏览), SEARCH(搜索),
     *        ADD_TO_CART(加购), PURCHASE(购买)
     */
    private String behaviorType;

    /**
     * 行为目标ID
     * 可能是商品ID、页面URL等，根据具体行为类型而定
     */
    private String targetId;

    /**
     * 行为发生时间
     * 默认为事件创建时间
     */
    private Date timestamp = new Date();

    /**
     * 行为附加数据 (JSON格式)
     * 可存储行为相关的扩展信息，如：
     * - 点击位置坐标
     * - 搜索关键词
     * - 加购数量
     */
    private String extraData;

    /**
     * 设备信息
     * 记录用户使用的设备类型，如：
     * - PC
     * - iOS
     * - Android
     * - H5
     */
    private String deviceType;

    /**
     * IP地址
     * 用于地理位置分析
     */
    private String ipAddress;

    /**
     * 会话ID
     * 用于关联同一用户的一次访问过程中的多个行为
     */
    private String sessionId;
}